package interfaz;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.SQLException;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

import modelo.Aula;
import modelo.CentroEstudios;
import modelo.Equipo;

import javax.swing.JTabbedPane;
import javax.swing.JList;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Font;
import javax.swing.SwingConstants;

public class VAulas extends JInternalFrame {
	private CentroEstudios centroEstudios;
	private DefaultTableModel modelo;
	
	private boolean modificar = false;
	private JTextField txtCod;
	private JTextField txtCap;
	private JTable table;
	private JList lstEquipos;
	private JList lstAula;
	private JTabbedPane tabbedPane;
	private Vector<Equipo> vEquiposAula = new Vector<Equipo>();

	/**
	 * Create the frame.
	 * @param centroEstudios 
	 */
	public VAulas(CentroEstudios centroEstudios) {
		
		this.centroEstudios = centroEstudios;
		setClosable(true);
		setTitle("AULAS");
		setBounds(0, 0, 894, 520);
		getContentPane().setLayout(null);
		
		JLabel lblCodigoAula = new JLabel("Codigo aula:");
		lblCodigoAula.setBounds(295, 111, 104, 15);
		getContentPane().add(lblCodigoAula);
		
		JLabel lblNewLabel = new JLabel("Capacidad:");
		lblNewLabel.setBounds(295, 136, 104, 15);
		getContentPane().add(lblNewLabel);
		
		txtCod = new JTextField();
		txtCod.setBounds(417, 109, 114, 19);
		getContentPane().add(txtCod);
		txtCod.setColumns(10);
		
		txtCap = new JTextField();
		txtCap.setBounds(417, 134, 114, 19);
		getContentPane().add(txtCap);
		txtCap.setColumns(10);
		
		JButton btnAceptar = new JButton("Aceptar");
		btnAceptar.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if(comprobarCampos() && vEquiposAula.size()!=0){
					Aula aula = new Aula(txtCod.getText(), Integer.parseInt(txtCap.getText()), vEquiposAula);
					try {
						if (modificar){
							//modificando
							VAulas.this.centroEstudios.modificarAula(aula);
							modificar = false;
						}else{
							//creando
							VAulas.this.centroEstudios.crearAula(aula);
						}
						JOptionPane.showMessageDialog(VAulas.this, "Aula creada correctamente.", "Aulas", JOptionPane.INFORMATION_MESSAGE);
						ponerBlancos();
						cargarDatos();
					} catch (SQLException e1) {
						e1.printStackTrace();
						JOptionPane.showMessageDialog(VAulas.this, "No se ha podido crear el aula.", "Aulas", JOptionPane.ERROR_MESSAGE);
					}
				}else{
					JOptionPane.showMessageDialog(VAulas.this, "Ponga bien los datos.","Aulas",JOptionPane.WARNING_MESSAGE);
				}
			}
		});
		btnAceptar.setBounds(392, 163, 117, 25);
		getContentPane().add(btnAceptar);
		
		tabbedPane = new JTabbedPane(JTabbedPane.TOP);
		tabbedPane.setBounds(184, 200, 566, 227);
		getContentPane().add(tabbedPane);
		
		JPanel anadirEquipos = new JPanel();
		tabbedPane.addTab("Equipos", null, anadirEquipos, null);
		anadirEquipos.setLayout(null);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(12, 47, 215, 141);
		anadirEquipos.add(scrollPane);
		
		JButton button = new JButton(">>");
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				try{
					int indice = lstEquipos.getSelectedIndex();
					vEquiposAula.addElement(VAulas.this.centroEstudios.vEquipos.elementAt(indice));
					lstAula.setListData(vEquiposAula);
				}catch (Exception ex) {
					ex.printStackTrace();
					JOptionPane.showMessageDialog(VAulas.this, "Seleccione el equipo que desea añadir al aula.", "Aulas", JOptionPane.WARNING_MESSAGE);
				}
			}
		});
		button.setBounds(249, 60, 54, 25);
		anadirEquipos.add(button);
		
		JButton button_1 = new JButton("<<");
		button_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				try{
					int indice = lstAula.getSelectedIndex();
					vEquiposAula.remove(indice);
					lstAula.setListData(vEquiposAula);
				}catch (Exception e) {
					JOptionPane.showMessageDialog(null, "Seleccione el equipo que desea quitar del aula.", 
														"Aulas", JOptionPane.ERROR_MESSAGE);
				}
			}
		});
		button_1.setBounds(249, 125, 54, 25);
		anadirEquipos.add(button_1);
		
		lstEquipos = new JList(VAulas.this.centroEstudios.vEquipos);
		lstEquipos.setBounds(12, 47, 138, 141);
		scrollPane.setViewportView(lstEquipos);
		
		JScrollPane scrollPane_1 = new JScrollPane();
		scrollPane_1.setBounds(320, 47, 215, 141);
		anadirEquipos.add(scrollPane_1);
		
		lstAula = new JList();
		lstAula.setBounds(261, 48, 138, 141);
		scrollPane_1.setViewportView(lstAula);
		
		JPanel listaAulas = new JPanel();
		tabbedPane.addTab("Aulas", null, listaAulas, null);
		listaAulas.setLayout(null);
		
		JScrollPane scrollPane2 = new JScrollPane();
		scrollPane2.setBounds(12, 12, 387, 139);
		listaAulas.add(scrollPane2);
		
		table = new JTable();
		//table.setBounds(12, 12, 387, 139);
		scrollPane2.setViewportView(table);
		
		JButton btnModificar = new JButton("Modificar");
		btnModificar.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				modificar = true;
				Aula aula = VAulas.this.centroEstudios.vAulas.elementAt(table.getSelectedRow());
				txtCod.setText(aula.getIdAula());
				txtCap.setText(Integer.toString(aula.getCapacidad()));
				vEquiposAula = aula.getvEquipos();
				lstAula.setListData(vEquiposAula);
				tabbedPane.setSelectedIndex(0);
			}
		});
		btnModificar.setBounds(146, 163, 117, 25);
		listaAulas.add(btnModificar);
		
		JLabel lblAulas = new JLabel("AULAS");
		lblAulas.setHorizontalAlignment(SwingConstants.CENTER);
		lblAulas.setFont(new Font("Dialog", Font.BOLD, 26));
		lblAulas.setBounds(316, 34, 267, 33);
		getContentPane().add(lblAulas);
		
		//Desactivar paneles
		if (VMain.establecerPermisos(VAulas.this.centroEstudios.usuario)==2){
			tabbedPane.setEnabledAt(0, false);
			txtCod.setEnabled(false);
			txtCap.setEnabled(false);
			btnModificar.setEnabled(false);
			btnAceptar.setEnabled(false);
			tabbedPane.setSelectedIndex(1);
		}
	}
	
	/*
	 * Devuelve false si los campos están vacíos
	 */
	private boolean comprobarCampos() {
		if ("".equalsIgnoreCase(txtCod.getText()) || "".equalsIgnoreCase(txtCap.getText())){
			return false;
		}else{
			return true;
		}
	}
	
	public void cargarDatos(){
		modelo = new DefaultTableModel();
		modelo.addColumn("idAula");
		modelo.addColumn("Capacidad");
		for (int i=0;i<VAulas.this.centroEstudios.vAulas.size();i++){
			Object[] linea = new Object[2];
			linea[0] = VAulas.this.centroEstudios.vAulas.elementAt(i).getIdAula();
			linea[1] = VAulas.this.centroEstudios.vAulas.elementAt(i).getCapacidad();
			modelo.addRow(linea);
		}
		table.setModel(modelo);
	}
	
	public void setVisible(boolean b){
		super.setVisible(b);
		if (b) cargarDatos();
	}
	
	public void ponerBlancos(){
		txtCod.setText("");
		txtCap.setText("");
		vEquiposAula.clear();
		lstAula.setListData(vEquiposAula);
	}
}